package ganga.sport;

import ganga.custodian.Helper;
import ganga.sport.R;
import ganga.sportsman.Application;

import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;

/**
 * Окно настроек хранителя. Вкл/Выкл датчиков и настройка их параметров.
 * Настройки сохраняются в xml-файл.
 * 
 * @author kva
 * @version 1.0
 * @updated 29-мар-2012 16:07:37
 */
public class CustodianPreferenceActivity extends android.preference.PreferenceActivity implements
		OnSharedPreferenceChangeListener {

	private Application application;
	static class Preferences{
		public static boolean useAccelerometr(SharedPreferences sharedPreferences){
			return sharedPreferences.getBoolean(ACC_ON, false);
		}
	}
	public static final String ACC_ON = "ACC_ON";
	public static final String ACC_FREQ = "ACC_FREQ";
	public static final String TEST_ON = "TEST_ON";
	public static final String DISPLAY_ON = "DISPLAY_ON";

	private ListPreference mListPreference;

	/**
	 * Метод вызывается, когда окно настроек создаётся впервые.
	 * 
	 * @param savedInstanceState
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.application = Application.getInstance();

		// Load the preferences from an XML resource
		addPreferencesFromResource(R.xml.preferences);

		// Get a reference to the preferences
		SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);

		mListPreference = (ListPreference) getPreferenceScreen().findPreference(ACC_FREQ);
	}

	/**
	 * Метод вызывается, при восстановлении данного окна для продолжения
	 * взаимодествия с ним пользователя.
	 */
	@Override
	protected void onResume() {
		super.onResume();
		// Set up a listener whenever a key changes
		getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
	}

	/**
	 * Метод вызывается, когда окно переходит в фоновый режим, но не
	 * уничтожается.
	 */
	@Override
	protected void onPause() {
		super.onPause();
		// Unregister the listener whenever a key changes
		getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
	}

	/**
	 * Метод вызывается, когда общие настройки изменены, добавлены или удалены.
	 * 
	 * @param sharedPreferences
	 * @param key
	 */
	public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

		// Диспетчер, понимающий какая настройка изменена и вызывающий
		// соответствующий метод
		if (key.equals(ACC_ON)) {
			if (Preferences.useAccelerometr(sharedPreferences))
				
				//Intent i = new Intent();
			Helper.showToast("Изменена настройка включения acc "+ sharedPreferences.getBoolean(ACC_ON, false));
		} else if (key.equals(ACC_FREQ)) {
			Helper.showToast("Изменена настройка частоты обновления acc");
			mListPreference.setSummary("Текущая частота обновления:\n" + sharedPreferences.getString(key, ""));
		} else if (key.equals(TEST_ON)) {
			if (sharedPreferences.getBoolean(key, false)) {
				Helper.showToast("Тест запущен");
				application.runTest();
			} else {
				Helper.showToast("Тест остановлен");
			}
		} else if (key.equals(DISPLAY_ON)) {
			// TODO: Сделать более понятный метод, чем
			// sharedPreferences.getBoolean(key, false)
			if (sharedPreferences.getBoolean(DISPLAY_ON, false)) {
				Helper.showToast("Экран устройства не будет переходить в спящий режим");

				// TODO: Перенести код в класс управления энергопотреблением

			} else {
				Helper.showToast("Экран устройства будет переходить в спящий режим");

			}
		}// DISPLAY_ON
	}

}
